Node.js এর ইভেন্ট-ড্রিভেন আর্কিটেকচার এবং Non-blocking I/O মডেল

Computer Programming - নোড জেএস (Node.js) - Node.js এর ভূমিকা (Introduction to Node.js)
253

Node.js এর অন্যতম গুরুত্বপূর্ণ বৈশিষ্ট্য হল তার ইভেন্ট-ড্রিভেন আর্কিটেকচার এবং নন-ব্লকিং I/O মডেল, যা এটি অত্যন্ত কার্যকরী, স্কেলেবল এবং দ্রুত পারফরম্যান্স প্রদান করতে সক্ষম করে। এই দুটি বৈশিষ্ট্য Node.js কে সার্ভার সাইড ডেভেলপমেন্টের জন্য উপযুক্ত একটি প্রযুক্তি হিসেবে প্রতিষ্ঠিত করেছে।


১. ইভেন্ট-ড্রিভেন আর্কিটেকচার (Event-driven Architecture)

Node.js একটি ইভেন্ট-ড্রিভেন আর্কিটেকচার অনুসরণ করে, যার মানে হল যে, এটি সার্ভারের কার্যকলাপগুলো ইভেন্ট বা ঘটনা দ্বারা নিয়ন্ত্রিত করে। এটি ইভেন্ট লুপ ব্যবহার করে, যা সার্ভারের কার্যক্রম পরিচালনা এবং ইভেন্টগুলির জন্য অপেক্ষা করে।

কিভাবে কাজ করে:

  • যখন একটি ইভেন্ট ঘটে (যেমন কোন HTTP রিকোয়েস্ট আসা, ডেটাবেস থেকে ডাটা প্রাপ্তি), Node.js তা ট্র্যাক করে এবং পরবর্তী কার্যক্রম বা callback ফাংশন সম্পন্ন করে।
  • ইভেন্ট লুপ তখন এই ইভেন্টগুলোকে কিউতে রাখে এবং প্রতিটি ইভেন্টের জন্য সংশ্লিষ্ট callback ফাংশন কার্যকর করে।
  • এটি একটি একক থ্রেডে কাজ করে, তবে একাধিক ইভেন্ট একসাথে সমাধান করতে পারে কারণ ইভেন্ট লুপ ইভেন্টগুলোকে নন-ব্লকিংভাবে ম্যানেজ করে।

উদাহরণ:

ধরা যাক, আমরা একটি HTTP সার্ভার তৈরি করেছি যা একটি রিকোয়েস্ট গ্রহণ করার পর একটি নির্দিষ্ট কাজ করে। এখানে ইভেন্ট লুপ এটি পরিচালনা করবে।

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello, World!');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

এখানে, যখন সার্ভারে রিকোয়েস্ট আসবে, এটি একটি ইভেন্ট হিসেবে ট্রিগার হবে এবং callback ফাংশনটি কার্যকর হবে। ইভেন্ট লুপ এই ইভেন্টটি গ্রহণ করে এবং রেসপন্সটি পাঠাবে।


২. Non-blocking I/O মডেল (Non-blocking I/O Model)

Non-blocking I/O (ইনপুট/আউটপুট) মডেল হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা Node.js কে তার প্রতিযোগীদের থেকে আলাদা করে তোলে। I/O অপারেশনগুলো যেমন ডাটাবেস কুয়েরি, ফাইল সিস্টেমের সাথে ইন্টারঅ্যাকশন বা নেটওয়ার্ক কনেকশন অনেক সময় নেয়। সাধারণত অন্যান্য প্রযুক্তিতে, এই ধরনের অপারেশন চলাকালীন সার্ভার "ব্লক" হয়ে যায়, অর্থাৎ তা অন্য কাজ করতে পারে না। তবে, Node.js এর নন-ব্লকিং I/O মডেল এর বিপরীত কাজ করে।

কিভাবে কাজ করে:

  • নন-ব্লকিং: যখন Node.js একটি I/O অপারেশন (যেমন ফাইল পড়া, ডেটাবেস কুয়েরি) শুরু করে, এটি অপেক্ষা না করে পরবর্তী কাজ চালিয়ে যায়। অন্য কথায়, Node.js অন্যান্য কাজ সম্পাদন করতে পারে, যতক্ষণ না I/O অপারেশনটি সম্পন্ন হয়।
  • অ্যাসিনক্রোনাস (Asynchronous): I/O অপারেশন সম্পন্ন হলে Node.js ইভেন্ট লুপের মাধ্যমে কলব্যাক ফাংশনটি ট্রিগার করে এবং ফলাফল প্রক্রিয়া করে।

উদাহরণ:

ধরা যাক, আমরা একটি ফাইল থেকে ডেটা পড়ার জন্য Node.js ব্যবহার করছি:

const fs = require('fs');

console.log('Start reading file...');
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.log('Error reading file:', err);
  } else {
    console.log('File data:', data);
  }
});
console.log('End of program');

এখানে, fs.readFile একটি অ্যাসিনক্রোনাস ফাংশন। এটি ফাইলটি পড়তে সময় নেবে, তবে Node.js এর ইভেন্ট লুপ পরবর্তী লাইনগুলি সম্পাদন করবে, যেমন 'End of program' প্রদর্শন করবে। ফাইল পড়া সম্পন্ন হলে কলব্যাক ফাংশনটি চালানো হবে এবং তখন ফাইলের ডেটা প্রিন্ট হবে।

এভাবে, Node.js এর নন-ব্লকিং I/O মডেল সার্ভারের পারফরম্যান্স বৃদ্ধি করে এবং একাধিক I/O অপারেশন একসাথে পরিচালনা করতে সক্ষম হয়।


ইভেন্ট-ড্রিভেন আর্কিটেকচার এবং নন-ব্লকিং I/O মডেলের মধ্যে সম্পর্ক

Node.js এর ইভেন্ট-ড্রিভেন আর্কিটেকচার এবং নন-ব্লকিং I/O মডেল একে অপরের পরিপূরক। ইভেন্ট-ড্রিভেন আর্কিটেকচার ইভেন্টগুলি ট্র্যাক করে এবং সেই অনুযায়ী কাজগুলো সম্পাদন করে, যখন নন-ব্লকিং I/O মডেল নিশ্চিত করে যে এই ইভেন্টগুলোর জন্য অপেক্ষা না করে সার্ভার অন্যান্য কাজ করতে পারে।

সারাংশ

  • ইভেন্ট-ড্রিভেন আর্কিটেকচার Node.js কে তার কার্যক্রমগুলো ইভেন্ট বা ঘটনা দ্বারা নিয়ন্ত্রণ করতে সাহায্য করে। ইভেন্ট লুপ দ্বারা সার্ভার একটি একক থ্রেডে একাধিক কাজ সম্পন্ন করতে পারে।
  • নন-ব্লকিং I/O মডেল Node.js কে উচ্চ পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করে, কারণ I/O অপারেশনগুলি সার্ভারের প্রধান থ্রেডকে ব্লক না করে অন্য কাজ সম্পন্ন হতে দেয়।

এই দুটি বৈশিষ্ট্য Node.js কে দ্রুত, স্কেলেবল এবং দক্ষ সার্ভার সাইড ডেভেলপমেন্ট প্ল্যাটফর্ম হিসেবে প্রতিষ্ঠিত করেছে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...